

/**
 * 
 * 字符串分割
 * 
 * 题目描述

给定一个非空字符串S，其被N个‘-’分隔成N+1的子串，给定正整数K，要求除第一个子串外，其余的子串每K个字符组成新的子串，并用‘-’分隔。
对于新组成的每一个子串，如果它含有的小写字母比大写字母多，则将这个子串的所有大写字母转换为小写字母；
反之，如果它含有的大写字母比小写字母多，则将这个子串的所有小写字母转换为大写字母；大小写字母的数量相等时，不做转换。

输入描述
输入为两行，第一行为参数K，第二行为字符串S。

输出描述
输出转换后的字符串。

用例
输入	3
12abc-abCABc-4aB@
输出	12abc-abc-ABC-4aB-@
说明	
子串为12abc、abCABc、4aB@，第一个子串保留，
后面的子串每3个字符一组为abC、ABc、4aB、@，
abC中小写字母较多，转换为abc，
ABc中大写字母较多，转换为ABC，
4aB中大小写字母都为1个，不做转换，
@中没有字母，连起来即12abc-abc-ABC-4aB-@
输入	12
12abc-abCABc-4aB@
输出	12abc-abCABc4aB@
说明	
子串为12abc、abCABc、4aB@，第一个子串保留，
后面的子串每12个字符一组为abCABc4aB@，
这个子串中大小写字母都为4个，不做转换，
连起来即12abc-abCABc4aB@

字符串循环 截取每 K个字符，需要注意递增步长 和 下标越界问题

for(int j=0; j<stringJoinerNew.toString().length(); j+=k){

                String subStr = stringJoinerNew.toString().substring(j, Math.min(j+k, stringJoinerNew.length()));
 */

import java.util.Scanner;
import java.util.StringJoiner;

/**
 * 
 * 题目解析
此题应该就是考察字符串的操作能力的，只要熟练掌握字符串操作即可。

本题比较困惑的是，第一个子串是否要做大小写转换？看用例说明的意思，应该是不用做的。

下面代码中，我把大小写转换抽出成一个方法，考试时可以根据自行使用。
 */

public class 字符串分割 {

    public static void main(String[] args) {

        try{

            Scanner scanner = new Scanner(System.in);

            //获取 K
            int k = scanner.nextInt();
            //获取字符串
            String originStr = scanner.next();

            //对字符串进行拆分
            String[] spiltStr = originStr.split("-");
            //对子元素进行拼接
            StringJoiner stringJoiner = new StringJoiner("-");
            //第一个字符串保持不变
            stringJoiner.add(spiltStr[0]);

            //剩余的按照重新拼接成一个字符串
            StringJoiner stringJoinerNew = new StringJoiner("");
            for(int i=1; i<spiltStr.length; i++){
                stringJoinerNew.add(spiltStr[i]);
            }

            for(int j=0; j<stringJoinerNew.toString().length(); j+=k){

                String subStr = stringJoinerNew.toString().substring(j, Math.min(j+k, stringJoinerNew.length()));

                int upperCount = 0;
                int lowerCount = 0;

                //需要处理 大小写转换
                for(int n=0; n<subStr.length(); n++){

                    char s = subStr.charAt(n);

                    if(s >='a' && s <= 'z'){

                        //小写字母
                        lowerCount++;

                    } else if(s >= 'A' && s <= 'Z'){

                        //大写字母
                        upperCount++;

                    }

                    if(lowerCount > upperCount){

                        //全部转换成小写字母
                        subStr.toLowerCase();
                    } else if(lowerCount < upperCount){

                        //全部转换成大写字母
                        subStr.toUpperCase();
                    }
                }

                //拼接
                stringJoiner.add(subStr);
            }

            System.out.println(stringJoiner.toString());


        }catch(Exception e){
            e.printStackTrace();

            System.out.println("程序异常"+(null ==e ?"":e.getMessage()));
        }
    }
    
}
